又到了每日技術分享的時間,承續上一篇的內容,今天我們將會實作離線訊息發送和聯絡人上、下線通知的功能,而這一篇的分享文也是實作MSN機器人這個主題的最後一篇文章,雖然MSNPSharp這個API套件內還有許多其它的功能函式,但是我想對於MSN機器人來說,這些功能應該已經非常足夠了。
1.承續先前的Class,加入名為SendOfflieMsg的新函式,程式碼如下:
Public Sub SendOfflineMsg(ByVal account As String, ByVal msg As String)
Dim contact As Contact = msgr.ContactList.GetContact(account)
Dim txtMsg As New TextMessage(msg)
If contact Is Nothing Then
Exit Sub
Else
msgr.OIMService.SendOIMMessage(contact, txtMsg)
End If
'msgr.OIMService.SendOIMMessage(account, msg)
End Sub
透過OIMService的SendOIMMessage函式就可以發送離線的訊息,雖然SendOIMMessage有另一個多載的函式,但是在我實際測試的時候,利用網頁呼叫另一個多載的版本會引起非同步的呼叫,但是一般預設在網頁的設定是不執行非同步的作業的,所以我將它註解之後改為另一個版本,也就是和前兩篇所使用的方式雷同。
註:OIM應該是Offline Internet Message的縮寫。
2.聯絡人上、下線通知事件,我們必須訂閱相關的事件通知,所以在建構函式中加入下列的程式碼:
AddHandler msgr.Nameserver.ContactOnline, AddressOf ContactOnline
AddHandler msgr.Nameserver.ContactOffline, AddressOf ContactOffline
3.加入相對應的事件函式,程式碼如下:
Private Sub ContactOnline(ByVal sender As Object, ByVal e As ContactEventArgs)
'透過e.Contact取得上線的聯絡人
'在這裡加入聯絡人上線時所要採取的動作,例:更改資料庫中的上線狀態。
End Sub
Private Sub ContactOffline(ByVal sender As Object, ByVal e As ContactEventArgs)
'透過e.Contact取得離線的聯絡人
'在這裡加入聯絡人離線時所要採取的動作,例:更改資料庫中的離線狀態。
End Sub
以上就是今天的實作分享內容,其實整個MSN機器人的實作透過使用MSNPSharp這個現成SDK裡的API來達成我們想要的功能真的出乎意料的簡單,相關的通訊協定等事項都由MSNPSharp幫我們完成了,所以我們真正要做的就是發揮我們的想像力來實作出想要的功能。
如果覺得這個系列的主題不錯的話,別忘了按個「推」支持一下喔!
實作簡單的MSN機器人系列文章:
實作一個簡單的MSN機器人
實作一個簡單的MSN機器人-2
實作一個簡單的MSN機器人-3
實作一個簡單的MSN機器人-4
實作一個簡單的MSN機器人-5